package com.bingxue.edu.framework.excel.model;

import com.alibaba.excel.annotation.ExcelProperty;
import com.bingxue.edu.common.enums.GenderEnum;
import com.bingxue.edu.common.enums.JoinTypeEnum;
import com.bingxue.edu.common.enums.StudentClassEnum;
import com.bingxue.edu.framework.excel.converter.GenderConverter;
import com.bingxue.edu.framework.excel.converter.StudentClassStatusConverter;
import com.bingxue.edu.framework.excel.converter.StudentJoinConverter;
import com.mybatisflex.annotation.RelationManyToOne;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

@Data
@EqualsAndHashCode(callSuper = false)
@Schema(description = "班级学生信息excel导出")
public class ClassStudentExportModel {

    @Schema(description = "报名id")
    @ExcelProperty(index = 0,value = "报名id")
    private String enrollmentId;

    @Schema(description = "班级id")
    @ExcelProperty(index = 1,value = "班级id")
    private String classId;

    @Schema(description = "班级名称")
    @ExcelProperty(index = 2,value = "班级名称")
    @RelationManyToOne(selfField = "classId",targetTable = "edu_class_info",targetField = "id",valueField ="name")
    private String className;

    @Schema(description = "学生名称")
    @ExcelProperty(index = 3,value = "学生名称")
    private String studentName;

    @Schema(description = "学生id")
    @ExcelProperty(index = 4,value = "学生id")
    private String studentId;

    @Schema(description = "学生性别")
    @ExcelProperty(index = 5, converter = GenderConverter.class)
    private GenderEnum gender;

    @Schema(description = "学生加入方式")
    @ExcelProperty(index = 6,value = "学生加入方式",converter = StudentJoinConverter.class)
    private JoinTypeEnum studentJoinType;

    @Schema(description = "学生行课状态")
    @ExcelProperty(index = 7,value = "学生行课状态",converter = StudentClassStatusConverter.class)
    private StudentClassEnum studentClassStatus;

    @Schema(description = "备注（内部）")
    @ExcelProperty(index = 8,value = "备注（内部）")
    private String remark;

    @Schema(description = "报名课次数")
    @ExcelProperty(index = 9,value = "报名课次数")
    private Integer enrollLessonCount;

    @Schema(description = "已上课次数")
    @ExcelProperty(index = 10,value = "已上课次数")
    private Integer completedLessonCount;

    @Schema(description = "已退课次数")
    @ExcelProperty(index = 11,value = "已退课次数")
    private Integer cancelLessonCount;

    @Schema(description = "剩余可转班次数")
    @ExcelProperty(index = 12,value = "剩余可转班次数")
    private Integer remainClassChangeCount;

    @Schema(description = "剩余可调课次数")
    @ExcelProperty(index = 13,value = "剩余可调课次数")
    private Integer remainLessonChangeCount;


}
